package com.liujun.io.nio.trans.conn;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger;

import com.liujun.io.nio.trans.bean.FileMemonyChannel;
import com.liujun.io.nio.trans.tran.TransProxyByteMap;

/**
 * 进行连接通道的管理 源文件名：TransConnectManager.java 
 * 文件版本：1.0.0 创建作者：liujun
 * 创建日期：2016年8月19日 
 * 修改作者：liujun 
 * 修改日期：2016年8月19日 
 * 文件描述：TODO 版权所有：Copyright 2016
 * zjhz, Inc. All Rights Reserved.
 */
public class TransConnectManager {

    /**
     * 转换的队列A
     * 
     * @字段说明 fileTransB
     */
    private Map<Integer, FileMemonyChannel> fileTransChannel = new ConcurrentHashMap<>();

    /**
     * 前端连接
     * 
     * @字段说明 firstIndex
     */
    private AtomicInteger connIndex = new AtomicInteger();

    /**
     * 注册前端连接 方法描述
     * 
     * @return
     * @创建日期 2016年8月20日
     */
    public int regConnChannel() {
        int currIndex = connIndex.get();
        // 获取通道信息
        FileMemonyChannel fileChannel = new FileMemonyChannel();
        // 注册前端转发的请求通道
        fileChannel.setTransProxyA(new TransProxyByteMap());
        // 注册后端向前端发送请求的通道
        fileChannel.setTransProxyB(new TransProxyByteMap());

        fileTransChannel.put(connIndex.get(), fileChannel);

        connIndex.incrementAndGet();

        return currIndex;
    }

    /**
     * 得到连接通道信息 方法描述
     * 
     * @param index
     *            通过索引信息
     * @return
     * @创建日期 2016年8月20日
     */
    public FileMemonyChannel getFileChannel(int index) {
        return fileTransChannel.get(index);
    }
}
